import java.util.Scanner;

public class leetcodeDP35 {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int m = in.nextInt();
            int q= in.nextInt();
            int[][] arr=new int[n+1][m+1];
            for(int i=1;i<n+1;i++){
                for(int j=1;j<m+1;j++){
                    arr[i][j]=in.nextInt();
                }
            }
            //构造前缀和数组
            long[][] dp=new long[n+1][m+1];
            for(int i=1;i<n+1;i++){
                for(int j=1;j<m+1;j++){
                    dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+arr[i][j];
                }
            }
            //计算
            while(q>0){
                int x1=in.nextInt();
                int y1=in.nextInt();
                int x2=in.nextInt();
                int y2=in.nextInt();
                long ret=dp[x2][y2]-dp[x2][y1-1]-dp[x1-1][y2]+dp[x1-1][y1-1];
                System.out.println(ret);
                q--;
            }

        }
    }
}
